package generic;

/**
 * Derived2继承自GenericBase，但是没有任何类型参数，编译器没有发出任何警告。
 * 直到调用set()方法时才出现警告
 */
public class ErasureAndInteritance {

    @SuppressWarnings("unchecked")
    public static void main(String[] args) {
        Derived2 d2 = new Derived2();
        Object o = d2.get();
        d2.set(o);//编译器报警，
    }
}
class GenericBase<T> {
    private T element;

    public void set(T arg) {
        element = arg;
    }

    public T get() {
        return element;
    }
}

class Derived1<T> extends GenericBase<T> {}
//没有使用泛型
class Derived2 extends GenericBase{};
//编译报错了，?需要有个边界
//class Derived3 extends GenericBase<?>{};